<template>
  <div class="box" @click="add"></div>
  <Row>
    <Button type="default" @click="add">操作</Button>
  </Row>
</template>
<script>
import axios from 'axios'
import qs from 'qs'
export default {
  data() {
    return {
      a: 1,
      b: 2
    }
  },
  methods: {
    add() {
      console.log(`helloworld`)
    }
  },
  mounted() {
    const noAuthInstance = axios.create({})
    let isLogin = false
    const goLogin = () => {
      return noAuthInstance({
        url: './2.php',
        params: {
          a: 3,
          b: 4
        },
        adapter(config) {
          config.adapter = null
          console.log(`noAuthInstance`, `adapter`)
          return axios(config)
        }
      }).catch((err) => {
        isLogin = true
      })
    }
    const authInstance = axios.create({
      paramsSerializer(params) {
        params = Object.assign({}, params, {
          a: 1,
          b: 299
        })
        return qs.stringify(params)
      },
      async adapter(config) {
        config.adapter = null
        if (config.params._login) {
          await goLogin()
          await goLogin()
        }
        return noAuthInstance(config)
      }
    })

    authinstance.interceptors.request.use(
      function (config) {
        //如果没有登录需要先登录
        return config
      },
      function (error) {
        // 对请求错误做些什么
        return Promise.reject(error)
      }
    )
    authInstance
      .get('./1.php', {
        params: {
          a: 1,
          b: 9,
          _login: 1
        }
      })
      .catch((err) => {
        console.log(err)
      })

    //部分接口需要登录校验前置
    //登录接口使用最初

    console.log(`helloworld`)
  }
}
</script>
<style lang="scss" scoped>
.box {
  width: 100px;
  height: 100px;
  border: 1px solid #000;
}
</style>
